import sys
import tensorflow as tf

tf.random.set_seed(777)


def sep(label):
    print('-' * 32, label, '-' * 32, sep='')


# 1.	使用tensorflow2.0完成以下操作（每小题10分）
# (1)	矩阵创建
# ①	创建一个维度为3*3的全1矩阵
sep('1.1')
a11 = tf.ones([3, 3])
tf.print(a11, output_stream=sys.stdout, summarize=-1)

# ②	使用range，创建一个1-9的1阶张量
sep('1.2')
a12 = tf.range(1, 9+1)
tf.print(a12, output_stream=sys.stdout, summarize=-1)

# ③	打印上题的维度
sep('1.3')
tf.print('shape of a12', tf.shape(a12), output_stream=sys.stdout, summarize=-1)

# ④	将上题维度修改为3,1,3
sep('1.4')
a14 = tf.reshape(a12, [3, 1, 3])
tf.print(a14, output_stream=sys.stdout, summarize=-1)

# ⑤	使用函数，去除维度中函数1的维度
sep('1.5')
a15 = tf.squeeze(a14)
tf.print(a15, output_stream=sys.stdout, summarize=-1)

# (2)	切片及其他
# ①	使用1-9的向量，使用切片，打印3,4,5,6
sep('2.1')
a21 = a12[2:6]
tf.print(a21, output_stream=sys.stdout, summarize=-1)

# ②	打印上题向量的均值
sep('2.2')
mean22 = tf.reduce_mean(a21)
tf.print(mean22, output_stream=sys.stdout, summarize=-1)

# ③	创见一个2行2列的标准正态分布矩阵
sep('2.3')
a23 = tf.random.normal([2, 2], mean=0.0, stddev=1.0)
tf.print(a23, output_stream=sys.stdout, summarize=-1)

# ④	创建一个2行2列的全0矩阵
sep('2.4')
a24 = tf.zeros([2, 2])
tf.print(a24, output_stream=sys.stdout, summarize=-1)

# ⑤	将3,4问的结果拼接成一个4行2列的结果
sep('2.4')
a25 = tf.concat([a23, a24], axis=0)
tf.print(a25, output_stream=sys.stdout, summarize=-1)
